home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / prog_bas / qbsvga.zip / FEATURE.ADV next >
Text File  |  1996-04-21  |  5KB  |  85 lines

  1.      This file describes what I'll call an "advanced feature" of QBSVGA.
  2. There's nothing actually all that advanced about it.  It just gives you a
  3. "backdoor method" of overriding the VESA bios mode that QBSVGA identifies
  4. as the one corresponding to the QB-type mode that you input to BSCREEN.
  5. The reason for providing this capability is because, when the mode-finding
  6. subroutine FINDVESA searches your VESA bios data area for the video mode
  7. with the screen resolution that you're asking for, it stops at the first
  8. such mode it finds.  This is fine if that mode works.  Unfortunately, it's
  9. possible for your VESA bios to report support for a mode when such support
  10. is somewhat faulty.  Other than a faulty bios, the most likely cause of
  11. this is that your video card has capability that your screen doesn't have,
  12. at least in that particular video mode.  Note that "video mode" here
  13. refers to a specific bios integer used to access a video state with a
  14. certain resolution and other attributes.  It does not refer to the
  15. resolution itself.  You may very well be able to achieve that resolution
  16. using some other video mode for which the support is not faulty.  But
  17. FINDVESA won't find that mode unless it's the first one it comes to.
  18.  
  19.      If you know a particular bios mode integer will give you the
  20. resolution you want and you know your system provides acceptable support
  21. for it, you can use DOS' SET command to tell QBSVGA (i.e., subroutine
  22. BSCREEN) not to call FINDVESA and just use the bios mode of your choice.
  23. You do this by SETting up to 12 DOS environment variables, one for each of
  24. the 12 QB-type SVGA modes provided by QBSVGA, before running a program
  25. using the QBSVGA routines.  (You can save environment space by not defining
  26. such DOS variables for modes that you know you aren't going to need.)
  27. These environment variables establish a correlation between the QB-type
  28. mode and the bios mode integer that gives the resolution associated with
  29. that QB-type mode.  The name of each environment variable always contains 6
  30. characters and always begins with "MODE".  The fifth and sixth characters
  31. specify the QB-type mode (14 - 25) that you're establishing a correlation
  32. for.  Each environment variable is set equal to thet HEXADECIMAL bios mode
  33. that gives the resolution for the specified QB-type mode.  For example,
  34. let's say that you want an 800 x 600 x 16 screen mode (QB-type mode 15)
  35. but everytime QBSVGA tries to get this QB-type mode, you don't get results
  36. on the screen that you think are right--and you're sure it's because the
  37. video state isn't being set correctly.  The first thing to do is run VS
  38. using its option that allows you to graphically confirm mode support.
  39. (If you didn't read VS.TXT yet, now might be a good time.)  Welcome back.
  40. I hope I didn't do too bad of a job in VS.TXT explaining what to do with
  41. the VS program.  The advantage of running VS in its graphical confirmation
  42. mode is that it right then and there won't show you modes in its MODES.LST
  43. output file that your system (video card + screen) can't do.  Look in
  44. MODES.LST for the first bios mode that gives you your resolution.  Calling
  45. this integer "B", issue the following DOS command before running your
  46. program that uses QBSVGA:
  47.  
  48. SET MODE15=B
  49.  
  50. (Substitute the actual bios mode integer that gives you the 800 x 600 x 16
  51. resolution for "B".)  Don't put any spaces to the left of the equal sign
  52. in the SET command.  (Spaces immediately to the right are okay, but don't
  53. put them in the middle of B, i.e., if B = 6A, don't set MODE15 equal to
  54. "6 A".  Further, don't terminate your hexadecimal mode with an "h" (or
  55. "H").)  If QBSVGA works better now, it's apparent that FINDVESA was
  56. finding a bios mode that your screen couldn't do.  If your program doesn't
  57. work better, go back to MODES.LST and look for another bios mode that
  58.  
  59.  
  60.  
  61. gives you the 800 x 600 x 16 resolution, reissue the above SET command,
  62. and then try your program again.  Repeat this process until you run out of
  63. modes to try or QBSVGA works.  (You should, by the way, be able to use
  64. supported modes with the same screen resolution but increased colors with
  65. no problem.)
  66.  
  67.      Most importantly, when you go to set MODE##, make sure you set it
  68. equal to the bios mode integer that gives you the resolution for "##", not
  69. some other bios mode by mistake.  It's the value of the bios mode integer
  70. that determines what screen mode you get.  (QBSVGA sets various defaults
  71. based on "##" which are not necessarily compatible with noncorresponding
  72. bios modes.)   When you use this feature, the discussion in QBSVGA.BAS
  73. regarding BSCREEN's prompt for the bios mode in the situation in which
  74. FINDVESA cannot find a VESA mode does not apply.  (Once you use the SET
  75. MODE##= command to tell QBSVGA that you know a particular SVGA mode is
  76. supported, it doesn't matter whether you have VESA support at all.
  77. However, if you specify a bios mode larger than FFh, QBSVGA will assume
  78. that you have VESA support when it determines how to make a screen mode
  79. change or how to detect the current video mode in effect.)  Further, you
  80. don't need to use VS necessarily to find what bios modes you have VESA
  81. support for.  You can use the SET MODE##= command no matter how you know
  82. that the bios mode works with your system.  (The only advantage of VS is
  83. that MODES.LST lists the modes in the order in which FINDVESA looks for
  84. them.)
  85.